package com.zh.work.util.fc;

import com.zh.common.util.MD5Util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

/**
 * code is far away from bug with the animal protecting
 * ┏┓　　　┏┓
 * ┏┛┻━━━┛┻┓
 * ┃　　　　　　　┃
 * ┃　　　━　　　┃
 * ┃　┳┛　┗┳　┃
 * ┃　　　　　　　┃
 * ┃　　　┻　　　┃
 * ┃　　　　　　　┃
 * ┗━┓　　　┏━┛
 * 　　┃　　　┃神兽保佑
 * 　　┃　　　┃代码无BUG！
 * 　　┃　　　┗━━━┓
 * 　　┃　　　　　　　┣┓
 * 　　┃　　　　　　　┏┛
 * 　　┗┓┓┏━┳┓┏┛
 * 　　　┃┫┫　┃┫┫
 * 　　　┗┻┛　┗┻┛
 *
 * @Description: 检测传入的参数是否需要加密
 * @Author: Liard
 * @Create in: 2020/7/16 14:28
 * @Version: 1.0.1
 */
public class CheckParamEncrypt {

    public static TreeMap encryptParam(TreeMap<String, String> treeMap, String key) {
        for (HashMap.Entry<String, String> map : treeMap.entrySet()) {
            if (map.getKey().equals("cardNo")) {
                treeMap.put("cardNo", AESUtil.encrypt(map.getValue(), key));
            }
            if (map.getKey().equals("certNo")) {
                treeMap.put("certNo", AESUtil.encrypt(map.getValue(), key));
            }
            if (map.getKey().equals("cvn2")) {
                treeMap.put("cvn2", AESUtil.encrypt(map.getValue(), key));
            }
            if (map.getKey().equals("validDate")) {
                treeMap.put("validDate", AESUtil.encrypt(map.getValue(), key));
            }
            if (map.getKey().equals("birthDay")) {
                treeMap.put("birthDay", AESUtil.encrypt(map.getValue(), key));
            }
        }
        return treeMap;
    }

    // 获取sign
    public static String md5Encrypt(TreeMap map, String key) {
        String str = converMap(map);
        String addkey;
        addkey = str + "key=" + key;
        return MD5Util.getMD5String(addkey);
    }

    public static String converMap(TreeMap map) {
        StringBuffer sb = new StringBuffer();
        Iterator iter = map.entrySet().iterator();
        while (iter.hasNext()) {
            Map.Entry entry = (Map.Entry) iter.next();
            sb.append(entry.getKey())
                    .append("=")
                    .append(entry.getValue())
                    .append("&");
        }
        return sb.toString();
    }
}
